﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Logica.Modulos.ClasesLogica;
using Modelo.Modulos.ClasesModelado;

namespace ProyectoFinal
{
    public partial class frmDashboard : Form
    {
        private int idUsuario;
        private int idPerfil;
        private string nombreCompleto;
        string Accion_Form = "";
        public int IdUsuario
        {
            get { return idUsuario; }
            set { idUsuario = value; }

        }
        public int IdPerfil
        {
            get { return idPerfil; }
            set { idPerfil = value; }

        }
        public string NombreCompleto
        {
            get { return nombreCompleto; }
            set { nombreCompleto = value; }

        }
        
        public frmDashboard()
        {
            InitializeComponent();
        }

        private void frmDashBoard_Load(object sender, EventArgs e)
        {
            CargarPermisos();
            lblUsuario.Text = nombreCompleto;
            UsuarioMod objMod = new UsuarioMod();
            Accion_Form = "Cargar";
            CargarGrid(Accion_Form);
            CargarGridTareas("Cargar");
        }

        private void tsmSalir_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void tsmRepTrabajo_Click(object sender, EventArgs e)
        {
            frmReportarTrabajo repTrabajo = new frmReportarTrabajo();
            repTrabajo.IdUsuario = IdUsuario;
            repTrabajo.ShowDialog();
        }

        private void btnAdminComentarios_Click(object sender, EventArgs e)
        {
            try
            {
                frmComentarios comentarios = new frmComentarios();
                int Idindice = dgvTareas.SelectedRows[0].Index;
                comentarios.IdTarea = Convert.ToInt32(dgvTareas[0, Idindice].Value);
                comentarios.ShowDialog();
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
                
            }
            
        }

        private void tsmAdmUsuario_Click(object sender, EventArgs e)
        {
            frmAdminUsuarios AdminUsuarios = new frmAdminUsuarios();
             AdminUsuarios.IdPerfilPermiso= idPerfil;
            AdminUsuarios.ShowDialog();
            CargarPermisos();
        }

        private void tsmAdmPeriles_Click(object sender, EventArgs e)
        {
            frmAdminPerfil AdminPerfiles = new frmAdminPerfil();
            AdminPerfiles.IdPerfilPermiso = idPerfil;
            AdminPerfiles.ShowDialog();
            CargarPermisos();
        }

        private void btnAvance_Click(object sender, EventArgs e)
        {
            try
            {
                frmAvance avance = new frmAvance();
                int Idindice = dgvTareas.SelectedRows[0].Index;
                avance.IdTarea = Convert.ToInt32(dgvTareas[0, Idindice].Value);
                avance.IdProyecto = Convert.ToInt32(dgvTareas[1, Idindice].Value);
                avance.ShowDialog();
                CargarGridTareas("Cargar");
                CargarGrid("Cargar");

            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
           
        }

        private void tsmCatalogoPropiedad_Click(object sender, EventArgs e)
        {
            frmCatalogoPrioridades prioridades = new frmCatalogoPrioridades();
            prioridades.IdPerfil = idPerfil;
            prioridades.ShowDialog();
        }

        private void tsmCatalogoPuesto_Click(object sender, EventArgs e)
        {
            frmCatalogoPuestos puestos = new frmCatalogoPuestos();
            puestos.IdPerfil = idPerfil;
            puestos.ShowDialog();
        }

        private void tsmCatalogoClientes_Click(object sender, EventArgs e)
        {
            frmCatalogoClientes clientes = new frmCatalogoClientes();
            clientes.IdPerfil = idPerfil;
            clientes.ShowDialog();
        }

        private void administraciónProyectosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAdministracionProyecto adminProyecto = new frmAdministracionProyecto();
            adminProyecto.Accion = "Agregar";
            adminProyecto.ShowDialog();
            CargarGrid("Agregar");
        }

        private void administrToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAdministradorTareas admintarea = new frmAdministradorTareas();
            admintarea.IdPerfilPermiso = idPerfil;
            admintarea.IdUsuario = IdUsuario;
            admintarea.ShowDialog();
            CargarGridTareas("Cargar");
        }

        private void tiempo_Tick(object sender, EventArgs e)
        {
            lblFecha.Text = DateTime.Now.ToString();
        }



        public void CargarPermisos()
        {
            btnAgregar.Visible = false;
            btnEditar.Visible = false;
            btnEliminar.Visible = false;
            btnVer.Visible = false;
            administraciónProyectosToolStripMenuItem.Visible = false;
            Perfil_PermisoLog Logica = new Perfil_PermisoLog();
            PerfilesMod objMod = new PerfilesMod();
            objMod.IdPerfil = idPerfil;
            List<PerfilesMod> listaPermisos_Perfil = Logica.ConsultarPermisoIdPerfil(objMod);



            for (int i = 0; i < listaPermisos_Perfil.Count; i++)
            {
                if (listaPermisos_Perfil[i].NombrePermiso == "Crear Proyecto")
                {
                    btnAgregar.Visible = true;
                    administraciónProyectosToolStripMenuItem.Visible = true;
                }
                else
                {
                    if (listaPermisos_Perfil[i].NombrePermiso == "Modificar Proyecto")
                    {
                        btnEditar.Visible = true;

                    }
                    else
                    {
                        if (listaPermisos_Perfil[i].NombrePermiso == "Eliminar Proyecto")
                        {
                            btnEliminar.Visible = true;
                        }
                        else
                        {
                            if (listaPermisos_Perfil[i].NombrePermiso == "Ver Proyecto")
                            {
                                btnVer.Visible = true;
                            }
                        }
                    }

                }
            }
        }

        public void CargarGrid(string Accion_Form)
        {
            if ((Accion_Form == "Agregar") || (Accion_Form == "Cargar") || (Accion_Form == "Editar"))
            {
                dgvProyectos.Rows.Clear();
                ProyectoLog logica = new ProyectoLog();
                ProyectoMod obj = new ProyectoMod();
                obj.IdUsuario = idUsuario;
                List<ProyectoMod> listaProyectos = logica.ConsultarProyectoIdUsuario(obj);

                for (int i = 0; i < listaProyectos.Count; i++)
                {
                    dgvProyectos.Rows.Add();
                    dgvProyectos.Rows[i].Cells[0].Value = listaProyectos[i].IdProyecto;
                    dgvProyectos.Rows[i].Cells[1].Value = listaProyectos[i].NombreProyecto;
                    dgvProyectos.Rows[i].Cells[2].Value = listaProyectos[i].ProjectManager;
                    dgvProyectos.Rows[i].Cells[3].Value = listaProyectos[i].NombreCliente;
                    dgvProyectos.Rows[i].Cells[4].Value = listaProyectos[i].FechaInicio;
                    dgvProyectos.Rows[i].Cells[5].Value = listaProyectos[i].FechaFin;
                    dgvProyectos.Rows[i].Cells[6].Value = (listaProyectos[i].PorcentajeAvance).ToString()+"%";
                
                }
            }

            else
            {
                if (Accion_Form == "Eliminar")
                {
                    UsuariosLog logica = new UsuariosLog();
                    List<UsuarioMod> listaClientes = logica.ConsultarUsuarios();

                    DataGridViewSelectedRowCollection listaGrid = dgvProyectos.SelectedRows;
                    for (int i = listaGrid.Count - 1; i >= 0; i--)
                    {
                        dgvProyectos.Rows.RemoveAt(listaGrid[i].Index);
                    }
                }

                else
                {


                }

            }

        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            frmAdministracionProyecto adminProyecto = new frmAdministracionProyecto();
            adminProyecto.Accion = "Agregar";
            adminProyecto.ShowDialog();
            CargarGrid("Agregar");

        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            try
            {
                frmAdministracionProyecto adminProyecto = new frmAdministracionProyecto();
                adminProyecto.Accion = "Editar";
                int Idindice = dgvProyectos.SelectedRows[0].Index;
                adminProyecto.IdProyecto = Convert.ToInt32(dgvProyectos[0, Idindice].Value);
                adminProyecto.ShowDialog();
                CargarGrid("Editar");

            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {

                int Idindice = dgvProyectos.SelectedRows[0].Index;
                int IdeliminarProyecto = Convert.ToInt32(dgvProyectos[0, Idindice].Value);
                int nuevo;

                ProyectoMod objMod = new ProyectoMod();
                objMod.IdProyecto = IdeliminarProyecto;
           


                ProyectoLog Logica = new ProyectoLog();
                Logica.EliminarProyectoUsuario(objMod);
                Logica.EliminarProyecto(objMod);

               CargarGrid("Eliminar");
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error de capa 8", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnVer_Click(object sender, EventArgs e)
        {
            frmAdministracionProyecto adminProyecto = new frmAdministracionProyecto();
            adminProyecto.Accion = "Ver";
            int Idindice = dgvProyectos.SelectedRows[0].Index;
            adminProyecto.IdProyecto = Convert.ToInt32(dgvProyectos[0, Idindice].Value);
            adminProyecto.ShowDialog();

        }

        public void CargarGridTareas(string Accion_Form)
        {
            if ((Accion_Form == "Agregar") || (Accion_Form == "Cargar") || (Accion_Form == "Editar"))
            {
                dgvTareas.Rows.Clear();
                TareasLog logica = new TareasLog();
                TareasMod obj = new TareasMod();
                obj.IdUsuario = idUsuario;
                List<TareasMod> listaClientes = logica.ConsultarTareaIdUsuario(obj);

                for (int i = 0; i < listaClientes.Count; i++)
                {
                    dgvTareas.Rows.Add();
                    dgvTareas.Rows[i].Cells[0].Value = listaClientes[i].IdTarea;
                    dgvTareas.Rows[i].Cells[1].Value = listaClientes[i].IdProyecto;
                    dgvTareas.Rows[i].Cells[2].Value = listaClientes[i].NombreTarea;
                    dgvTareas.Rows[i].Cells[3].Value = listaClientes[i].NombreProyecto;
                    dgvTareas.Rows[i].Cells[4].Value = listaClientes[i].NombrePrioridad;
                    dgvTareas.Rows[i].Cells[5].Value = listaClientes[i].FechaInicio;
                    dgvTareas.Rows[i].Cells[6].Value = listaClientes[i].FechaFin;
                    dgvTareas.Rows[i].Cells[7].Value = (listaClientes[i].PorcentajeAvanceTarea)+" %";
                }
            }
        }

        private void dgvProyectos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                dgvTareas.Rows.Clear();
                TareasLog logica = new TareasLog();
                TareasMod obj = new TareasMod();
                obj.IdUsuario = idUsuario;
                int Idindice = dgvProyectos.SelectedRows[0].Index;
                obj.IdProyecto = Convert.ToInt32(dgvProyectos[0, Idindice].Value);
                List<TareasMod> listaClientes = logica.ConsultarTareaIdUsuarioProyecto(obj);

                for (int i = 0; i < listaClientes.Count; i++)
                {
                    dgvTareas.Rows.Add();
                    dgvTareas.Rows[i].Cells[0].Value = listaClientes[i].IdTarea;
                    dgvTareas.Rows[i].Cells[1].Value = listaClientes[i].IdProyecto;
                    dgvTareas.Rows[i].Cells[2].Value = listaClientes[i].NombreTarea;
                    dgvTareas.Rows[i].Cells[3].Value = listaClientes[i].NombreProyecto;
                    dgvTareas.Rows[i].Cells[4].Value = listaClientes[i].NombrePrioridad;
                    dgvTareas.Rows[i].Cells[5].Value = listaClientes[i].FechaInicio;
                    dgvTareas.Rows[i].Cells[6].Value = listaClientes[i].FechaFin;
                    dgvTareas.Rows[i].Cells[7].Value = (listaClientes[i].PorcentajeAvanceTarea) + " %"; ;
                }


            }
            catch (Exception exc)
            {


                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void btnVerTareas_Click(object sender, EventArgs e)
        {
            CargarGridTareas("Cargar");
        }

        private void tsmRepActividad_Click(object sender, EventArgs e)
        {
            frmActividadProyecto reporte = new frmActividadProyecto();
            reporte.Show();
        }
        //AGREGAR A SOFIA
        private void tsmTareas_Click(object sender, EventArgs e)
        {
            frmTarea tarea = new frmTarea();
            tarea.Accion = "Agregar";
            tarea.IdUsuario = idUsuario;
            tarea.ShowDialog();
            CargarGridTareas("Cargar");
        }
        //

     

       
     

    

    
    }
}
